package org.dromara.patrol.domain.bo;

import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.patrol.domain.PatrolTemplate;

import java.math.BigDecimal;

/**
 * 巡店管理-巡店模板配置业务对象 patrol_template
 *
 * @author LionLi
 * @date 2024-03-25
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = PatrolTemplate.class, reverseConvertGenerate = false)
public class PatrolTemplateBo extends BaseEntity {

    /**
     * 巡店模板id
     */
        @NotNull(message = "巡店模板id不能为空", groups = { EditGroup.class })
    private Long templateId;

    /**
     * 巡店模板名称
     */
    @NotBlank(message = "巡店模板名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 描述
     */
    private String description;

    /**
     * 分类等级（0 - 4 五个等级，用户自建默认 3）
     */
    private Long level;

    /**
     * 模板分数
     */
    private BigDecimal aggregateScore;

    /**
     * 模式（字典表：DEDUCTION 扣分模式，SCORE 评分模式）
     */
    @NotBlank(message = "模式（字典表：DEDUCTION 扣分模式，SCORE 评分模式）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String markStrategy;

    /**
     * 整改触发阈值
     */
//    @NotNull(message = "整改触发阈值不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal rectifyThreshold;

    /**
     * 评分项数量
     */
//    @NotNull(message = "评分项数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long itemNum;

    /**
     * 打分习惯（如果是评分模式，需要设置： DEDUCT 扣分， SCORE 得分）
     */
//    @NotBlank(message = "打分习惯（如果是评分模式，需要设置： DEDUCT 扣分， SCORE 得分）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String scoreHabit;

    /**
     * 版本
     */
//    @NotBlank(message = "版本不能为空", groups = { AddGroup.class, EditGroup.class })
    private String ver;

    /**
     * 得分计算公式，格式用","分割，包含数字、运算符、常量等（常量定义："TOTAL_SCORE" 模板总分，"TOTAL_GET_SCORE" 评分项总得分，"TOTAL_DEDUCTION_SCORE" 评分项总扣分，"ITEM_COUNT" 总评分项数，"INAPPLICABLE_ITEM_SCORE" 不适用评分项分数，"RESPONSIBLE_PERSONS" 责任人个数，"RP_SCORE" 责任人关联评分项总得分，"RP_DEDUCTION_SCORE" 责任人关联评分项总扣分）
     */
    private Object calculateRule;

    /**
     * 是否启用（0正常 1停用）
     */
//    @NotBlank(message = "是否启用（0正常 1停用）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String status;

    /**
     * 全部不得分（字典表：0 是， 1 否；如果分类配置表nodeScoreType 全部都是NO_SCORING 则为 1）
     */
//    @NotBlank(message = "全部不得分（字典表：0 是， 1 否；如果分类配置表nodeScoreType 全部都是NO_SCORING 则为 1）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String allNoScoring;


}
